//
//  HMHomeTableViewCell.swift
//  Weibo
//
//  Created by teacher on 2017/6/8.
//  Copyright © 2017年 teacher. All rights reserved.
//

import UIKit
import SnapKit

/*
    1. 原创微博
    2. 转发微博
    3. toolbar
 
    提示： 更新约束只能更新已存在约束
 
    问题出现的原因： toolbar顶部创建了两条顶部约束。
        --解决办法先把之前约束卸载掉，然后在去创建顶部约束，保证toolbar顶部只有一条约束了
 
 "<SnapKit.LayoutConstraint:0x6080002a6300@HMHomeTableViewCell.swift#44 Weibo.HMHomeToolBar:0x7faf3290b640.top == Weibo.HMHomeRetweetView:0x7faf32901920.bottom>",
 "<SnapKit.LayoutConstraint:0x6100002a2160@HMHomeTableViewCell.swift#54 Weibo.HMHomeToolBar:0x7faf3290b640.top == Weibo.HMHomeOriginalView:0x7faf32908290.bottom>"
*/

//  首页自定义cell
class HMHomeTableViewCell: UITableViewCell {

    //  记录上衣toolbar的顶部约束
    var toolbarTopConstraint: Constraint?
    
    //  引用ViewModel
    var statusViewModel: HMStatusViewModel? {
        didSet {
            
            //  设置子控件数据
            originalView.statusViewModel = statusViewModel
            
            //  卸载之前toolbar顶部约束
            toolbarTopConstraint?.deactivate()
            //  判断是否有转发微博
            if statusViewModel?.status?.retweeted_status != nil {
                //  有转发微博
                //  1. 显示转发微博视图
                retweetView.isHidden = false
                //  2. 重新创建约束
                toolBar.snp.makeConstraints({ (make) in
                    //  需要记录toolBar的顶部约束，在重新创建toolbar顶部约束之前把之前顶部约束要卸载掉
                    toolbarTopConstraint = make.top.equalTo(retweetView.snp.bottom).constraint
                })
                // 3. 设置ViewModel
                retweetView.statusViewModel = statusViewModel
            } else {
                //  没有转发微博
                //  1. 不显示转发微博视图
                retweetView.isHidden = true
                //  2. 重新创建约束
                toolBar.snp.makeConstraints({ (make) in
                    //  需要记录toolBar的顶部约束，在重新创建toolbar顶部约束之前把之前顶部约束要卸载掉
                    toolbarTopConstraint = make.top.equalTo(originalView.snp.bottom).constraint
                })
            }
        }
    }
    
    //  MARK:   --懒加载控件
    //  原创微博
    fileprivate lazy var originalView: HMHomeOriginalView = HMHomeOriginalView()
    //  转发微博
    fileprivate lazy var retweetView: HMHomeRetweetView = HMHomeRetweetView()
    //  toolbar
    fileprivate lazy var toolBar: HMHomeToolBar = HMHomeToolBar()
    
    override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
        super.init(style: style, reuseIdentifier: reuseIdentifier)
        setupUI()
    }
    
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
    //  添加控件设置约束
    private func setupUI() {
        //  设置contentView背景色
        contentView.backgroundColor = UIColor(white: 0.95, alpha: 1)
        
        //  添加子视图
        contentView.addSubview(originalView)
        contentView.addSubview(retweetView)
        contentView.addSubview(toolBar)
        
        //  设置约束
        originalView.snp.makeConstraints { (make) in
            make.top.equalTo(contentView).offset(8)
            make.leading.trailing.equalTo(contentView)
        }
        
        retweetView.snp.makeConstraints { (make) in
            make.top.equalTo(originalView.snp.bottom)
            make.leading.trailing.equalTo(originalView)
        }
        
        toolBar.snp.makeConstraints { (make) in
            //  oc里面约束对象没有.constraint，你的返回值就是一个约束对象
            toolbarTopConstraint = make.top.equalTo(retweetView.snp.bottom).constraint
            make.leading.trailing.equalTo(retweetView)
            make.height.equalTo(35)
            //  关键约束,设置toolbar底部等于contentView的底部
            make.bottom.equalTo(contentView)
       }
    }
}
